<!-- #file: receiver.html -->
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>PostMessage Receiver</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            max-width: 800px;
            margin: 0 auto;
            padding: 20px;
            background-color: #f5f5f5;
        }
        .container {
            background: white;
            border: 1px solid #ccc;
            padding: 20px;
            border-radius: 5px;
            margin-bottom: 20px;
        }
        .message-log {
            height: 200px;
            overflow-y: auto;
            border: 1px solid #ddd;
            padding: 10px;
            background: #fafafa;
        }
        .message-item {
            padding: 5px;
            border-bottom: 1px solid #eee;
        }
        button {
            padding: 10px;
            margin: 5px;
        }
    </style>
</head>
<body>
<h1>PostMessage 接收端</h1>

<div class="container">
    <h2>接收到的消息</h2>
    <div id="messageLog" class="message-log"></div>
</div>

<div class="container">
    <h2>回复消息</h2>
    <input type="text" id="replyInput" placeholder="输入回复内容">
    <button onclick="replyToParent()">回复父窗口</button>
    <button onclick="replyToOpener()">回复 opener 窗口</button>
</div>

<script>

    // 监听来自父窗口或其他窗口的消息
    window.addEventListener('message', function(event) {
        // 在实际应用中应该验证 event.origin 是否可信
        console.log('接收到消息:', event.data);

        // 显示接收到的消息
        displayMessage(event.data, `来自 ${event.origin}`);

        // 可以根据消息类型进行不同处理
        switch(event.data.type) {
            case 'from-iframe-parent':
                console.log('来自 iframe 父页面的消息:', event.data.message);
                break;
            case 'from-popup-parent':
                console.log('来自弹窗父页面的消息:', event.data.message);
                break;
            default:
                console.log('未知类型消息:', event.data);
        }
    });

    // 页面加载完成后发送初始化消息
    window.addEventListener('load', function() {
        // 通知父窗口页面已加载
        if (window.parent !== window) {
            window.parent.postMessage({
                type: 'iframe-loaded',
                message: 'iframe 页面已加载完成'
            }, '*');
        }

        // 通知 opener 窗口页面已加载
        if (window.opener) {
            window.opener.postMessage({
                type: 'popup-loaded',
                message: '弹窗页面已加载完成'
            }, '*');
        }
    });
</script>

<script th:src="@{/js/event.js}"></script>

</body>
</html>